//Передвижение маркеров
var rendererOptions = {
    draggable: false
  };
  var directionsDisplay = new google.maps.DirectionsRenderer(rendererOptions);;
  var directionsService = new google.maps.DirectionsService();
  var map;

  var australia = new google.maps.LatLng(51.1657, 10.4515);

function initialize() {
    var myOptions = {
      zoom: 4,
      mapTypeId: google.maps.MapTypeId.ROADMAP,
      center: australia    
    };
   
    var geocoder = new google.maps.Geocoder();
    map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
    directionsDisplay.setMap(map);

    directionsDisplay.setPanel(document.getElementById("directionsPanel"));

 
     
    //получаем стартовую и конечную точку из кукисов
    var start = get_cookie('start');
    var end = get_cookie('end');
    var points = get_cookie('point');
    //объявление переменных
    var test = [], start, end,  st = [], en = [], way = [], waypts = []
        arr2 = [], way_adr = [], arr = [], ways = [], arr3 = [], arrnew = [];    
    ways = points.split('|');
    //для того, чтоб получить массив из строки
    //проходимся циклом по оставшимся элементам массива    
    for (var t = 0;t < points.length;t++) {                
        //удаляем последнюю запятую после каждой координаты
        way = ways.slice(0, -1);
        geocoder.geocode( { 'address': '"' + way + '"'}, function(results, status) {
            if (status == google.maps.GeocoderStatus.OK) {
                //если координаты найдены - записываем в массив
                //добавлям полоску, чтобы было по чем сплитить строку
                arr.push(results[0].geometry.location + '|');   
                //и отправялем в кукисы
                document.cookie = "arr=" + arr;
            } 
        });
    }                
    //получаем координаты промежуточных точек
    var str = get_cookie("arr");     
    //и обнуляем кукисы
    delete_cookie("arr");        
    //если кукисы не пустые
    if (str == null) {    
        //сплитим строку и получаем массив
        var arr2 = str.split('|');        
        //удаляем последний пустой элемент массива
        arr2.pop();    
        //перебираем промежуточные точки
        for (var i = 0; i < arr2.length; i++) {                    
            //удаляем ненужную запятую в начале 
            arr3 = arr2[i].slice(1);            
            waypts.push({
                location:arr3      
            });        
        }
        //waypts.pop();
        var request = {
            origin: start,
            destination: end,
            waypoints: waypts,
            optimizeWaypoints: true,
            travelMode: google.maps.DirectionsTravelMode.DRIVING
        };
    } else {
        //если промежуточные точки не указаны, учитываем 2 точки
        var request = {
            origin: start,
            destination: end,
            optimizeWaypoints: true,
            travelMode: google.maps.DirectionsTravelMode.DRIVING    
        };
    }

    directionsService.route(request, function(response, status) {
      if (status == google.maps.DirectionsStatus.OK) {
          directionsDisplay.setDirections(response);
      }
    });
}


function computeTotalDistance(result) {
    var total = 0;
    var myroute = result.routes[0];
    for (i = 0; i < myroute.legs.length; i++) {
      total += myroute.legs[i].distance.value;
    }
    total = total / 1000.
    document.getElementById("total").innerHTML = total + " km";
  }   

function get_cookie ( cookie_name ) {
  var results = document.cookie.match ( '(^|;) ?' + cookie_name + '=([^;]*)(;|$)' );
 
  if ( results )
    return ( unescape ( results[2] ) );
  else
    return null;

}

function saveCoordinate() {
      //получаем значение полей
      var coordinate = get_cookie('points');
      //формируем урл для отправки GETом через AJAX
      /*var url = 'saveroute/coordinate/' + coordinate;
      //отправляем данные на другой action AJAXом
      downloadUrl(url, function(data, responseCode) {
        if (responseCode == 200 && data.length <= 1) {
          document.getElementById("message").innerHTML = "Данные добавлены.";
        }
      }); */
     //var data = 'cordinate=' + coordinate;
     var data = 'coordinate=' + coordinate;
            $.ajax({
                type: "POST",
                url: "saveroute",
                data: data,                                                   
                success: function(data){                  
                }
            });
}

function downloadUrl(url, callback) {
    var request = window.ActiveXObject ?
    new ActiveXObject('Microsoft.XMLHTTP') :
    new XMLHttpRequest;
      
    request.onreadystatechange = function() {
        if (request.readyState == 4) {
            request.onreadystatechange = doNothing;
            callback(request.responseText, request.status);
        }
    };
    request.open('GET', url, true);
    request.send(null);
}

function redir(url) {
    location=url;
}

function delete_cookie ( cookie_name ) {
  var cookie_date = new Date ( ); 
  cookie_date.setTime ( cookie_date.getTime() - 1 );
  document.cookie = cookie_name += "=; expires=" + cookie_date.toGMTString();
}